{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5f72d78b",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 87,  16,  55,  37,  53,  76,  84,  95,   4],\n",
       "       [ 49,  60,  69,   5,  59,  45,  47,  79,  77],\n",
       "       [ 43,  87,  98,  45,   8,  83,  86, 100,  23],\n",
       "       [ 21,  61,  74,  65,  84,  16,  99,  28,  76],\n",
       "       [ 65,  70,  85,  19,  85,  46,  75,  10,  98],\n",
       "       [ 17,  71,  66,  87,  16,  60,  89,  92,  91],\n",
       "       [ 84,  19,  81,   0,  20,  18,  88,  87,  26],\n",
       "       [ 44,  97,   8,  46,  25,  60,  11,  47,   1],\n",
       "       [ 35,  36,  51,  65,  59,  87,  29,  72,  88],\n",
       "       [ 48,  81,  12,  48,  29,  69,  48,  82,  44],\n",
       "       [ 43,  64,   8,   9,  17,  69,  79,  14,  16],\n",
       "       [ 44,  96,  82,  79,  73,  11,  98,  27,  46],\n",
       "       [  7,  16,  97,  29,  32,  34,  80,  36,  23],\n",
       "       [ 14,   0,  21,  84,  86,  59,  71,  42,  93],\n",
       "       [ 12,  83,  75,  46,  74,  73,  52,  74,  77],\n",
       "       [ 14,  53,  92,  82,  62,  29,  24,  90,  46],\n",
       "       [ 37,  32,  36,  75,   3,   6,  40,  64,  85],\n",
       "       [  5,  78,  78,  74,  84,  29,  97, 100,  92],\n",
       "       [ 95,  24,  79,  57,  15,  76,  19,  13,  75],\n",
       "       [ 72,  27,  64,  77,  79,  49,  86,  32,  46]])"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import random\n",
    "import time\n",
    "\n",
    "# arr = [random.uniform(0,100) for i in range(10)]\n",
    "# 生成一个二维数组，模拟各个学生的成绩\n",
    "score = np.array([[random.randint(0,100) for i in range(9)] for j in range(20)])\n",
    "score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0e0a64bb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: total: 516 ms\n",
      "Wall time: 522 ms\n",
      "CPU times: total: 172 ms\n",
      "Wall time: 178 ms\n"
     ]
    }
   ],
   "source": [
    "arr = []\n",
    "for i in range(100000000):\n",
    "    arr.append(random.random())\n",
    "    \n",
    "# 原生数组计算时间，\n",
    "%time sum1=sum(arr)\n",
    "    \n",
    "#numpy计算时间\n",
    "b  = np.array(arr)\n",
    "%time sum2 = np.sum(b)\n",
    "    \n",
    "# 结果：\n",
    "# CPU times: total: 516 ms\n",
    "# Wall time: 522 ms\n",
    "# CPU times: total: 172 ms\n",
    "# Wall time: 178 ms\n",
    "# numpy快的原因是：原生sum的时候，先找到地址值，再去取值计算，\n",
    "# 但np是直接存储，省去从地址拿数据的步骤\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "82454f5c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 9)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数组形状，20行9列\n",
    "score.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b99be289",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数组维数，二维\n",
    "score.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "749bea4d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "180"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数组size\n",
    "score.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f10d1f63",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 一个数组元素占空间大小\n",
    "score.itemsize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c2790ced",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 一个数组类型\n",
    "score.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "c6d977bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[70, 37, 88],\n",
       "        [67, 79, 79],\n",
       "        [13, 19, 79],\n",
       "        [65, 30, 37]],\n",
       "\n",
       "       [[20, 11, 11],\n",
       "        [43, 75, 31],\n",
       "        [47, 32, 64],\n",
       "        [87, 60, 45]],\n",
       "\n",
       "       [[33, 26, 98],\n",
       "        [40, 37, 42],\n",
       "        [15, 59, 92],\n",
       "        [61, 44, 19]],\n",
       "\n",
       "       [[17, 28, 79],\n",
       "        [58, 80, 89],\n",
       "        [ 3, 70, 53],\n",
       "        [61, 57, 66]],\n",
       "\n",
       "       [[27, 90, 51],\n",
       "        [92,  6, 34],\n",
       "        [62, 59, 30],\n",
       "        [52,  6, 48]]])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dimArr3 = np.array([[[random.randint(0,100) for i in range(3)] for j in range(4)] for k in range(5)])\n",
    "dimArr3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "a79ce8c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5, 4, 3)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dimArr3.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "6af74bd2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dimArr3.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "98e4d18e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "60"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dimArr3.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "fc4ea69f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dimArr3.itemsize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "4aeb338a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[78., 63., 86.],\n",
       "        [23., 65., 49.],\n",
       "        [99., 83., 73.],\n",
       "        [66., 16., 83.]],\n",
       "\n",
       "       [[37., 23., 18.],\n",
       "        [54., 87., 18.],\n",
       "        [50.,  5., 34.],\n",
       "        [87., 97., 47.]],\n",
       "\n",
       "       [[38., 66., 92.],\n",
       "        [ 4.,  9., 34.],\n",
       "        [64., 45., 42.],\n",
       "        [ 0., 50., 63.]],\n",
       "\n",
       "       [[63., 58., 47.],\n",
       "        [82., 83., 31.],\n",
       "        [ 9., 30., 83.],\n",
       "        [19.,  7., 42.]],\n",
       "\n",
       "       [[34., 49., 79.],\n",
       "        [ 6., 81.,  3.],\n",
       "        [11., 84., 83.],\n",
       "        [38., 83., 45.]]], dtype=float32)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# np.array([[[random.randint(0,100) for i in range(3)] for j in range(4)] for k in range(5)],dtype=np.string_)\n",
    "np.array([[[random.randint(0,100) for i in range(3)] for j in range(4)] for k in range(5)],dtype=np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "9d2ecb56",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成5行8列，全是1的数组\n",
    "oneArr = np.ones([5,8])\n",
    "oneArr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "108021fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.],\n",
       "       [1., 1., 1., 1., 1., 1., 1., 1.]], dtype=float32)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成5行8列，全是1的数组\n",
    "np.ones_like(oneArr,dtype=np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "cf2ee213",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.]])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros([5,8])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "3fa1cd05",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.],\n",
       "       [0., 0., 0., 0., 0., 0., 0., 0.]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros_like(oneArr)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "392a91a9",
   "metadata": {},
   "source": [
    "# np.array 与 np.asarray 区别"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "6475a86d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  1, 18],\n",
       "       [13, 17,  4]])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# a=np.array([[random.randint(0,20) for i in range(3)] for j in range(2)])\n",
    "a = np.array([[ 4,  1, 18],\n",
    "       [13, 17,  4]])\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "a35e754c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  1, 18],\n",
       "       [13, 17,  4]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 深拷贝\n",
    "a1 = np.array(a)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "ee3f5f74",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  1, 18],\n",
       "       [13, 17,  4]])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 浅拷贝，当a改变，a2也会变\n",
    "a2 = np.asarray(a)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "8c6c53eb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  1, 18],\n",
       "       [13, 17, 66]])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a[1,2]=66\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "c8572b1d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  1, 18],\n",
       "       [13, 17,  4]])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "eed4bb55",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  1, 18],\n",
       "       [13, 17, 66]])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "e7174e07",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([   0.,  100.,  200.,  300.,  400.,  500.,  600.,  700.,  800.,\n",
       "        900., 1000.])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 从 (0,1000] 生成等间隔的11个数值，默认50个，即生成等差数列\n",
    "np.linspace(0,1000,11)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "9dec75d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  0,  10,  20,  30,  40,  50,  60,  70,  80,  90, 100, 110, 120,\n",
       "       130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250,\n",
       "       260, 270, 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380,\n",
       "       390, 400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 500, 510,\n",
       "       520, 530, 540, 550, 560, 570, 580, 590, 600, 610, 620, 630, 640,\n",
       "       650, 660, 670, 680, 690, 700, 710, 720, 730, 740, 750, 760, 770,\n",
       "       780, 790, 800, 810, 820, 830, 840, 850, 860, 870, 880, 890, 900,\n",
       "       910, 920, 930, 940, 950, 960, 970, 980, 990])"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 从 （0，1000】中，生成步长10的数组,也是等差数列\n",
    "np.arange(0,1000,10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "f092ed79",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1.,  10., 100.])"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 等比数列\n",
    "# 10~x, 从(0,2]中生成 10 的X此方\n",
    "np.logspace(0,2,3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f41e2db4",
   "metadata": {},
   "source": [
    "## 生成正态分布数组、均值分布数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "e67b0f91",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([78.48972756, 83.80940523, 81.7518452 , 85.15310878, 76.39528519,\n",
       "       72.18587659, 85.24047896, 78.0995134 , 75.4425499 , 74.25013735,\n",
       "       85.49015421, 80.58553128, 82.24455618, 77.52033412, 80.16815021,\n",
       "       73.0942974 , 73.88105964, 86.01531661, 84.99853873, 72.81042912])"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成一个正态分布数组loc平均值，scale标准差，size生成数量\n",
    "arr2 = np.random.normal(loc=80,scale=5.5,size=20)\n",
    "arr2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "220964ef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABlgAAAKTCAYAAAB1kAUpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA81UlEQVR4nO3dfXCV5Zk/8CslkCJLTnkpiVmx0S5DRajb4g4C3equGnQDtNuZakub1dWiHayYCtW43Rntbgv4Uu3OMrXqdLRVO+nsWLrdTUXobpcOoyilza5Ya9spFKxE3DUkQNmEwvn94Y+zhPc7JOfknPP5zGTGPM91kvtE7pyT5/tc912RzWazAQAAAAAAwCl7W6EHAAAAAAAAUGwELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkqCz2AQjp48GC89tprMXr06KioqCj0cAAAAAAAgALKZrOxe/fuqKuri7e97cQ9KmUdsLz22msxceLEQg8DAAAAAAAYQrZv3x5nnXXWCWvKOmAZPXp0RLz1g6quri7waAAAAAAAgELq7u6OiRMn5vKDEynrgOXQsmDV1dUCFgAAAAAAICLilLYVsck9AAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAAAABAIgELAAAwZNS3tEV9S9txPwcAABgqBCwAAAAAAACJBCwAAEDB6E4BAACKlYAFAAAoKMuAAQAAxUjAAgAA5M1ABCnCGAAAYCgQsAAAAEPCkZvbH+v8kTXCFgAAoFAELAAAwKA4PADJVxgicAEAAPKlstADAAAAyks+g5atKxoH/XsBAADlSQcLAAAwqAY7UDny6+tiAQAA8kEHCwAA0G/H6hQZqIDjRF9HiAIAABSaDhYAAOC05btL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QK5mwYIF0d7eHqtXr47Vq1dHe3t7NDU15c4fOHAgGhsbY+/evbF+/fpobW2Np556KpYsWXK6Pw8AAAAAAICTqshms9nT+QJjx46Ne++9N6677rqoq6uL5ubmuP322yPirW6VmpqauPvuu+PGG2+Mrq6ueOc73xmPP/54XH311RER8dprr8XEiRPj+9//fsyZMydefvnlmDJlSmzYsCFmzJgREREbNmyImTNnxs9//vOYPHlyPP300zF37tzYvn171NXVRUREa2trXHvttbFz586orq4+5lh7enqip6cn93l3d3dMnDgxurq6jvsYAACKkyXCoPC2rmgs9BAAACBJd3d3ZDKZU8oN+r3J/YEDB6K1tTX27t0bM2fOjC1btkRHR0c0NDTkaqqqquLiiy+OZ599NiIiNm3aFPv37+9TU1dXF1OnTs3VPPfcc5HJZHLhSkTERRddFJlMpk/N1KlTc+FKRMScOXOip6cnNm3adNwxL1++PLfsWCaTiYkTJ/b36QMAAAAAAGUsOWB58cUX4w/+4A+iqqoqPv3pT8eqVatiypQp0dHRERERNTU1feprampy5zo6OmLEiBExZsyYE9ZMmDDhqO87YcKEPjVHfp8xY8bEiBEjcjXHcscdd0RXV1fuY/v27YnPHgAAAAAAIKIy9QGTJ0+O9vb22LVrVzz11FNxzTXXxLp163LnKyoq+tRns9mjjh3pyJpj1fen5khVVVVRVVV1wrEAAFD8LA8GAADAYEvuYBkxYkT80R/9UVx44YWxfPnyuOCCC+If/uEfora2NiLiqA6SnTt35rpNamtro7e3Nzo7O09Y8/rrrx/1fd94440+NUd+n87Ozti/f/9RnS0AAAAUhrATAIBS1u89WA7JZrPR09MT55xzTtTW1sbatWtz53p7e2PdunUxa9asiIiYPn16DB8+vE/Njh07YvPmzbmamTNnRldXV7zwwgu5mueffz66urr61GzevDl27NiRq1mzZk1UVVXF9OnTT/cpAQBQpOpb2lzQBQAAIC+Slgj7m7/5m7jyyitj4sSJsXv37mhtbY3/+I//iNWrV0dFRUU0NzfHsmXLYtKkSTFp0qRYtmxZnHHGGbFgwYKIiMhkMnH99dfHkiVLYty4cTF27NhYunRpTJs2LS677LKIiDjvvPPiiiuuiIULF8ZDDz0UERE33HBDzJ07NyZP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XXfdFXV1dTFy5Mi45JJL4qWXXirgiKE0/fa3v41PfvKTMW7cuDjjjDPij//4j2PTpk258+YiDK76+vqjXg8rKiripptuighzEPLh97//ffzt3/5tnHPOOTFy5Mg499xz4+/+7u/i4MGDuRpzEQbf7t27o7m5Od71rnfFyJEjY9asWbFx48bcefMQBtaPfvSjmDdvXtTV1UVFRUV897vf7XP+VOZcT09P3HzzzTF+/PgYNWpUzJ8/P1599dU8Pgsobiebh9/5zndizpw5MX78+KioqIj29vajvoZ5SISApWydf/75sWPHjtzHiy++mDt3zz33xP333x8rV66MjRs3Rm1tbVx++eWxe/fuAo4YSktnZ2fMnj07hg8fHk8//XT87Gc/iy9/+cvxjne8I1djLsLg2rhxY5/XwrVr10ZExEc/+tGIMAchH+6+++742te+FitXroyXX3457rnnnrj33nvjH//xH3M15iIMvk996lOxdu3aePzxx+PFF1+MhoaGuOyyy+K3v/1tRJiHMND27t0bF1xwQaxcufKY509lzjU3N8eqVauitbU11q9fH3v27Im5c+fGgQMH8vU0oKidbB7u3bs3Zs+eHStWrDju1zAPiYiILGXnzjvvzF5wwQXHPHfw4MFsbW1tdsWKFblj//u//5vNZDLZr33ta3kaIZS+22+/PfuBD3zguOfNRci/W265Jfvud787e/DgQXMQ8qSxsTF73XXX9Tn2kY98JPvJT34ym816PYR8+N3vfpcdNmxY9l//9V/7HL/ggguyn//8581DGGQRkV21alXu81OZc7t27coOHz4829ramqv57W9/m33b296WXb16dd7GDqXiyHl4uC1btmQjIvvTn/60z3HzkEN0sJSpX/7yl1FXVxfnnHNOfOxjH4tf//rXERGxZcuW6OjoiIaGhlxtVVVVXHzxxfHss88WarhQcr73ve/FhRdeGB/96EdjwoQJ8b73vS8eeeSR3HlzEfKrt7c3nnjiibjuuuuioqLCHIQ8+cAHPhD/9m//Fr/4xS8iIuI///M/Y/369fEXf/EXEeH1EPLh97//fRw4cCDe/va39zk+cuTIWL9+vXkIeXYqc27Tpk2xf//+PjV1dXUxdepU8xLyxDzkEAFLGZoxY0Z885vfjGeeeSYeeeSR6OjoiFmzZsX//M//REdHR0RE1NTU9HlMTU1N7hxw+n7961/Hgw8+GJMmTYpnnnkmPv3pT8fixYvjm9/8ZkSEuQh59t3vfjd27doV1157bUSYg5Avt99+e3z84x+P97znPTF8+PB43/veF83NzfHxj388IsxFyIfRo0fHzJkz4+///u/jtddeiwMHDsQTTzwRzz//fOzYscM8hDw7lTnX0dERI0aMiDFjxhy3Bhhc5iGHVBZ6AOTflVdemfvvadOmxcyZM+Pd7353fOMb34iLLrooIiIqKir6PCabzR51DOi/gwcPxoUXXhjLli2LiIj3ve998dJLL8WDDz4Yf/VXf5WrMxchP77+9a/HlVdeGXV1dX2Om4MwuL797W/HE088Ed/61rfi/PPPj/b29mhubo66urq45pprcnXmIgyuxx9/PK677rr4wz/8wxg2bFi8//3vjwULFsRPfvKTXI15CPnVnzlnXkLhmYflRwcLMWrUqJg2bVr88pe/jNra2oiIo5LWnTt3HnX3BNB/Z555ZkyZMqXPsfPOOy+2bdsWEWEuQh795je/iR/84AfxqU99KnfMHIT8+NznPhctLS3xsY99LKZNmxZNTU3x2c9+NpYvXx4R5iLky7vf/e5Yt25d7NmzJ7Zv3x4vvPBC7N+/P8455xzzEPLsVOZcbW1t9Pb2Rmdn53FrgMFlHnKIgIXo6emJl19+Oc4888zcG+i1a9fmzvf29sa6deti1qxZBRwllJbZs2fHK6+80ufYL37xi3jXu94VEWEuQh49+uijMWHChGhsbMwdMwchP373u9/F297W90+SYcOGxcGDByPCXIR8GzVqVJx55pnR2dkZzzzzTHzoQx8yDyHPTmXOTZ8+PYYPH96nZseOHbF582bzEvLEPOQQS4SVoaVLl8a8efPi7LPPjp07d8YXv/jF6O7ujmuuuSYqKiqiubk5li1bFpMmTYpJkybFsmXL4owzzogFCxYUeuhQMj772c/GrFmzYtmyZXHVVVfFCy+8EA8//HA8/PDDERHmIuTJwYMH49FHH41rrrkmKiv/722ROQj5MW/evPjSl74UZ599dpx//vnx05/+NO6///647rrrIsJchHx55plnIpvNxuTJk+NXv/pVfO5zn4vJkyfHX//1X5uHMAj27NkTv/rVr3Kfb9myJdrb22Ps2LFx9tlnn3TOZTKZuP7662PJkiUxbty4GDt2bCxdujSmTZsWl112WaGeFhSVk83DN998M7Zt2xavvfZaRETuJtna2tqora01D/k/WcrO1VdfnT3zzDOzw4cPz9bV1WU/8pGPZF966aXc+YMHD2bvvPPObG1tbbaqqir7wQ9+MPviiy8WcMRQmv7lX/4lO3Xq1GxVVVX2Pe95T/bhhx/uc95chMH3zDPPZCMi+8orrxx1zhyEwdfd3Z295ZZbsmeffXb27W9/e/bcc8/Nfv7zn8/29PTkasxFGHzf/va3s+eee252xIgR2dra2uxNN92U3bVrV+68eQgD64c//GE2Io76uOaaa7LZ7KnNuX379mU/85nPZMeOHZsdOXJkdu7cudlt27YV4NlAcTrZPHz00UePef7OO+/MfQ3zkGw2m63IZrPZ/Mc6AAAAAAAAxcseLAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIkELAAAAAAAAIn+HwTaFjeg23ePAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# x = np.random.normal(loc=80.0,scale=5.5,size=10000000)\n",
    "x = np.random.normal(80.0,5.5,10000000)\n",
    "plt.figure(figsize=(20,8),dpi=100)\n",
    "\n",
    "# hist 直方图，分成1000组\n",
    "plt.hist(x,1000)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "0da1a2f1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABlgAAAKTCAYAAAB1kAUpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABAJElEQVR4nO3dfYxc1WE3/u/Gxsa27Am2492sYhpHsijEtCEmj7FJAxXGkGIslKqmNd2mKgIiE+gGKC9P+kJQsYNTXlSsUKBRSXl5nD+euo0S6tp9kRuXN9eJ20AIUVXCS/Fi+nRZ28SyiZnfHxHzY21j9uzO7Mzsfj7SSrt3ztw559w7594533t3OqrVajUAAAAAAAAM2fuaXQEAAAAAAIB2I2ABAAAAAAAoJGABAAAAAAAoJGABAAAAAAAoJGABAAAAAAAoJGABAAAAAAAoJGABAAAAAAAoNLHZFWimt956K6+88kqmT5+ejo6OZlcHAAAAAABoomq1mr1796a7uzvve9+x71EZ1wHLK6+8krlz5za7GgAAAAAAQAt56aWX8qEPfeiYZcZ1wDJ9+vQkP+uoGTNmNLk2AAAAAABAM+3Zsydz586t5QfHMq4Dlrf/LdiMGTMELAAAAAAAQJIM6WtFfMk9AAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAAAAABAIQELAAC8w4dv/HY+fOO3m10NAAAAWpyABQAAAAAAoJCABUbIVa4AAAAAAOOPgAUAAAAAAKCQgAUAAAAAAKCQgAUAhsG/BwQAAAAY3wQsAAAAAEBbcvEb0EwCFgAAAAAAgEICFgAAAIBxxlX/ADByAhYAAKDlmQRkvKjXpPdYnTwfi22CdjVWxxmAEgIWABhnfAgaGR8kAQBoZ85lGY9G83Oc99j4ImCBAgZIGJ+89wGAVucCAErYV2hF7bhfGnvbw3C3kW3LUAhYGJPG0gGumW0ZS/0IMF6NpXG8GW0Z7WOhYy8A0Kqco+iDZhmtc2RBDMMhYGFUvNtAaACiHkxGtR7bY3jsywyX/aZ+Rrsvbbsy432cHM9tHyp9RCPZv2iWoRz/3vm4fXVsqcf5z3DXMd7PvWAoBCwwChp9MCpZvwNjexoPV203y3hpJ+Xe3jfG2/4xHts8nti+gw33fV567tUKfd4KdWi2VuqDoe4X7XIsalYdW71f3k0z+qtd+6qZmrGNbCeaaSzuf8bbIxlr6k/AQsuq15t9vA4c47XdDM143TfGa7tLNXqyEerpWPvreDgWtmP72rHOtKdj7WvDOc7V8/NJvY2F99VYG7PHWnvgvdjnh2ckfdYuIXw7KL3wYTTYru1DwELdNXsAaPbrt6JWn3yq54ffemp2v9RDu7VhNE9U2q1v3jaUfw3grjYO1877/LHY10fPaH+YbKcr4e1bo0+f/0w7Xl3fqsej0n+/9M7ntGJ7RttY6ot6t6Nd+mSsbL+haLe2tlJd363vWqmO0AwCFoZtrA+gbiNsfe3SX/6NSHtolb4fT0ajv5t9N2Sjr4R65/NadR8eyqRLK9a73oZ7Z9hIr2qst0Zvq3bYF9qhjmNVq45zo+nwMbUVr7gdqXebvGunNrSyZk6QjvRCoHY4Bh1r/62H8fYeaKX3fSvVZTwbrxfh2vdam4CFhjnawceAMPpG42rMsb5dG3ki1ezJ39F67WZMrI7lE2BXDrW/d26rd/u9FYzl91G9vduVzUN9biv381g4VrWCdmh7Pc8bR/NY1ah1NmObtdIFXu2wz7aSsdBf7RBkNeLig1Zv89G0Y52HaiRta7U5qLG8nYajXfviWNtxpPMhjA3FAcs///M/58ILL0x3d3c6Ojry13/914Mer1arufnmm9Pd3Z0pU6bk7LPPzjPPPDOozIEDB3LVVVdl9uzZmTZtWlasWJGXX355UJn+/v709PSkUqmkUqmkp6cnr7/++qAyL774Yi688MJMmzYts2fPztVXX52DBw+WNol3UTrBPtyrUdrhgDNePmC1o3r3Uav0eatfidiMK7Gbvf4SQwmYW/EqwUZqpbq8m9JjWbPbM9LJheFOfDa73SNR7/1wtPbrVpsMOtb+U+/JueGcj9I+WvUii9EMHVr9Ip52ed16v3azxrFmvXarjZ2NGM/fuc7xeLwYyb7Qiv0lHD62dumDRs8PjGet+L4dy4oDljfeeCO/+Iu/mPXr1x/18XXr1uWOO+7I+vXrs3379nR1deXcc8/N3r17a2V6e3uzcePGbNiwIdu2bcu+ffuyfPnyHDp0qFZm1apV2blzZzZt2pRNmzZl586d6enpqT1+6NChXHDBBXnjjTeybdu2bNiwIf/3//7fXHvttaVNYgyrx2DSjKs2x8tA2ArtbPbrv9NQrnpo1GRBI7zbJFs9P9gMN+jhSEOdFG3k+3a4E7ONqHM99s1GalboX3ocKwkWmzVGvdvfQ3n+0X4/VrmRGs3jZisco1vJcPeN0tcYC8f5eq338N8ZvqGOV414vaEsH+5rjIXxcCThi/fHsTVqjGon47ntw9GK/TUa5x/D1Yrvr2bXZ6h9MprjU7P7ZLwoDlg+/elP54//+I/zmc985ojHqtVq7rrrrnzxi1/MZz7zmSxYsCBf//rX85Of/CSPPPJIkmRgYCBf+9rXcvvtt2fp0qU57bTT8tBDD+X73/9+/v7v/z5J8uyzz2bTpk358z//8yxevDiLFy/O/fffn29961t57rnnkiSbN2/OD37wgzz00EM57bTTsnTp0tx+++25//77s2fPnqPW/cCBA9mzZ8+gHzia0Q5mWunA1OgJ8UZ7tzqOZr1H+0PsWFDPfauVT0KHajj1eq8J3mZdHdROk4UjVRImNFOr1qtEaXgz2ppZl1bqh2PRR43Rjm1r9jFqKEHr0cabduzrVnSsvhzuBRLtun3eqy+arZEh8Gh//m7G+lrt9Ybq3cbEkknk0vXXQ7uOA29rxfoPtT71nA8ZyXGgFbRSXWisun4Hy/PPP5++vr4sW7astmzy5Mk566yz8thjjyVJduzYkTfffHNQme7u7ixYsKBW5vHHH0+lUsmiRYtqZc4444xUKpVBZRYsWJDu7u5amfPOOy8HDhzIjh07jlq/tWvX1v7lWKVSydy5c+vX+HGi1RPWoRy863EC38iTS46tVSZkWvV9MFb2rXY7ETn8asKhlmXoGtWvrbg9mjU51Gr9UE+t1LZGTCLVM6Bu5ERHIzV64q5U6fu4nvUf6WTEaJ1Pjwft2Be2YWM1u2/H8+eLkWpEgDNe+7ZVztlL1tcq26od38MC1NH1Xu+Vsdz2ZppYz5X19fUlSTo7Owct7+zszAsvvFArM2nSpJxwwglHlHn7+X19fZkzZ84R658zZ86gMoe/zgknnJBJkybVyhzupptuyjXXXFP7e8+ePUKW9/DON96Pv3xB3dc5mpr14Xo0nnP4c4e6rRrRJx++8dvv+vrHemw45Urq1MjyQ3neO7dN6XYqfa3hlh3teg11Hc3qr3rug63uWBNlo9EP73ZlXLtop7qOB408Frbyth7psauZY957jTXDOY4fvr7D2zmUEKGkT4bbj6263Zq1X4zGBUzHOuaN1Dv3m8MDq3eeA45k/fVQ77bSGM3u46HsJ/Wo49HeK/XWqhfHjbaSPi49P29m+4dyTH/be50fDPWxRhrJ8Wy4c1Cjdf7SKPU+n2rW+NvscZ/hq2vA8raOjo5Bf1er1SOWHe7wMkcrP5wy7zR58uRMnjz5mPWg/koODsMdSFptcB+KVpjQOFy9AqHhBnP1/NBZcpJVj9dulEbWqyTwelsr7a9jXSPGiEaEhyN9TiMmm1pxfE1av15DXc7oaOWJineWa+T+PNTJvdEy2ttktN6b9dreIzkPG0m9aG2tOFk00joNZ1JzrO3PjbyAqx0vvGnEuFyvC/OaYSjvsVbdpiMN+t/rYtOhBDrjVcnYPBpzFPW+GKcR6ym9iGO872ONVNeApaurK8nP7i754Ac/WFu+e/fu2t0mXV1dOXjwYPr7+wfdxbJ79+4sWbKkVubVV189Yv2vvfbaoPU8+eSTgx7v7+/Pm2++ecSdLdSfN+XRNfIDRD2vDip9bCTlR/uKznrXZbzs6/WeFGmE4b4H6lnfRu5Doxl+1MNItkc9TiDfq8xI1jGU54+Weh9XhhsuDzXIKjmxH+oH73a9krXVHb5vjXRCoR71GQ3N3vZDnXRq9GTaaAdT9bh7oxW1YngwHM08l6hnuVZQj3OVkT6vnuP7cAy1D5r5XxeGqx7nJu1woV8jjuvDmfxt5JzAaGjUa9XjArWh3tFbut5maMX30LG0W30ZmroGLPPmzUtXV1e2bNmS0047LUly8ODBbN26NbfddluSZOHChTnuuOOyZcuWrFy5Mkmya9euPP3001m3bl2SZPHixRkYGMhTTz2V//W//leS5Mknn8zAwEAthFm8eHFuvfXW7Nq1qxbmbN68OZMnT87ChQvr2Sya6Ghp7Nu/j4UPM8NRj6TeiUp9NOLqt9HWiLsHmqEdPqgcS6uGWsPV6Pq2Qtg2mkqvTBoNh4ey9QrbGjkxNRpapW6tUo9GatVxs+R1R6OO9QiVW+Wceyzv163UzyVa5er6d9s3jjWJ+G593q7bYrxq9EWIjXzdobzGcB6r12u0qlYNLVr99YdzftKouY5WOXa0kpF+thruebFjXv0UByz79u3Lf/zHf9T+fv7557Nz587MnDkzJ554Ynp7e7NmzZrMnz8/8+fPz5o1azJ16tSsWrUqSVKpVHLppZfm2muvzaxZszJz5sxcd911OfXUU7N06dIkycknn5zzzz8/l112We69994kyeWXX57ly5fnpJNOSpIsW7Ysp5xySnp6evKVr3wl//M//5Prrrsul112WWbMmDHijmFomn0QGq6RDOjt2uZ6Gu5JaCMfr2ddaDzboPFauY9buW4jNZbb1izNvMp1LExgjPTCjEbW3ftl9IyXO5Saodl3CzTK2+1o1ERYK/dTK9ftbc26K6XRz2k3pW1s1IWOxxqDxvJ2aNW2jcW78xpJP5QTjLSe4oDlX//1X/PLv/zLtb/f/tL4z372s3nggQdy/fXXZ//+/Vm9enX6+/uzaNGibN68OdOnT689584778zEiROzcuXK7N+/P+ecc04eeOCBTJgwoVbm4YcfztVXX51ly5YlSVasWJH169fXHp8wYUK+/e1vZ/Xq1TnzzDMzZcqUrFq1Kn/yJ39S3gu0lXqeMNTjqr7RNJYO1O1QxxLNnrgYLaNxJdV7vf5onUiM9ZOWdpkwa+RVavX6n7mj8ZxWWn+70A+jY6z381hvHzTKeH/vtOrnxFZ6rVZbTz2Nlyv0x9L8RKl238ZD2SZj4fNwo/fRsXpHFeWKA5azzz471Wr1XR/v6OjIzTffnJtvvvldyxx//PG5++67c/fdd79rmZkzZ+ahhx46Zl1OPPHEfOtb33rPOjP6WvUK0lYw3gfgVqznSP6dR6tctTSejObJ7LFupS1ZPtTHS5/TLtu+XerZSGO9D1rtQ0kjtFNdGXvqdfwYS/txyfnAaN4p3QpaLchv9f5t9frRmoY6QT0a7MOto5W2xUjmORr1Oq2wXmiEun4HC4wFIx3Ex9oHjlagj4ZnLPRbK4ULww1VaA/N2I72HZrNPti6RmtSpJWMlXZAPQ13Er/V3k+tVp8SrVD3sX4Ba6vVp0Q715328879rd53Abb73UrNJmChbdXzQNauB8V2rTcjY7uPHWNtW7Zae1qtPgzfWNuWzfogM9b6sdH0F4xtrXIHgrGm/vQp9WR/GrlW7MNWrNPRtEs9xzsBCy2lnQeOdq77UIz19o0lthXjgf2c8cY+Pzr0MzSH9177ata2a5fvEwSO7lh337mbgnbzvmZXgPbh5AMAgKFy7th4+rjxhnqXw1jfFmO9fQAcydgPQ+MOFoBxxAnS6NLf1NN42p/GS1vHSzsZrJ23ezvXnfHJPgvQfozdtBsBC0ADOCFgrLAvw+gZi++3sdgmWstY3sfapW3tUk/GPvsi7cK+CmOLgAUAAKCQyZHRMxb6eiy0AYDhcxyAsct3sAAAAAAAABQSsAAA45KryAAAAICR8C/CAAAAAACgAVzcN7YJWAAAAKCJTLwMpj8AgHbhX4QBAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUErAAAAAAAAAUqnvA8tOf/jS///u/n3nz5mXKlCn5yEc+kltuuSVvvfVWrUy1Ws3NN9+c7u7uTJkyJWeffXaeeeaZQes5cOBArrrqqsyePTvTpk3LihUr8vLLLw8q09/fn56enlQqlVQqlfT09OT111+vd5MAAAAAAAAGqXvActttt+XP/uzPsn79+jz77LNZt25dvvKVr+Tuu++ulVm3bl3uuOOOrF+/Ptu3b09XV1fOPffc7N27t1amt7c3GzduzIYNG7Jt27bs27cvy5cvz6FDh2plVq1alZ07d2bTpk3ZtGlTdu7cmZ6enno3CQAAAAAAYJCOarVarecKly9fns7Oznzta1+rLfvVX/3VTJ06NQ8++GCq1Wq6u7vT29ubG264IcnP7lbp7OzMbbfdliuuuCIDAwP5wAc+kAcffDAXX3xxkuSVV17J3Llz8+ijj+a8887Ls88+m1NOOSVPPPFEFi1alCR54oknsnjx4vzwhz/MSSed9J513bNnTyqVSgYGBjJjxox6dsOY8OEbv93sKgAAAAAA0CA//vIFza5CyynJDep+B8snP/nJ/MM//EN+9KMfJUn+7d/+Ldu2bcuv/MqvJEmef/759PX1ZdmyZbXnTJ48OWeddVYee+yxJMmOHTvy5ptvDirT3d2dBQsW1Mo8/vjjqVQqtXAlSc4444xUKpVamcMdOHAge/bsGfQDAAAAAABQamK9V3jDDTdkYGAgP//zP58JEybk0KFDufXWW/Mbv/EbSZK+vr4kSWdn56DndXZ25oUXXqiVmTRpUk444YQjyrz9/L6+vsyZM+eI158zZ06tzOHWrl2bL33pSyNrIAAAAAAAMO7V/Q6Wb3zjG3nooYfyyCOP5Lvf/W6+/vWv50/+5E/y9a9/fVC5jo6OQX9Xq9Ujlh3u8DJHK3+s9dx0000ZGBio/bz00ktDbRYAAAAAAEBN3e9g+b3f+73ceOON+fVf//UkyamnnpoXXngha9euzWc/+9l0dXUl+dkdKB/84Adrz9u9e3ftrpaurq4cPHgw/f39g+5i2b17d5YsWVIr8+qrrx7x+q+99toRd8e8bfLkyZk8eXJ9GgoAAAAAAIxbdb+D5Sc/+Une977Bq50wYULeeuutJMm8efPS1dWVLVu21B4/ePBgtm7dWgtPFi5cmOOOO25QmV27duXpp5+ulVm8eHEGBgby1FNP1co8+eSTGRgYqJUBAAAAAABohLrfwXLhhRfm1ltvzYknnpiPfvSj+d73vpc77rgjv/M7v5PkZ//Wq7e3N2vWrMn8+fMzf/78rFmzJlOnTs2qVauSJJVKJZdeemmuvfbazJo1KzNnzsx1112XU089NUuXLk2SnHzyyTn//PNz2WWX5d57702SXH755Vm+fHlOOumkejcLAAAAAACgpu4By913350/+IM/yOrVq7N79+50d3fniiuuyB/+4R/Wylx//fXZv39/Vq9enf7+/ixatCibN2/O9OnTa2XuvPPOTJw4MStXrsz+/ftzzjnn5IEHHsiECRNqZR5++OFcffXVWbZsWZJkxYoVWb9+fb2bBAAAAAAAMEhHtVqtNrsSzbJnz55UKpUMDAxkxowZza5Oy/nwjd9udhUAAAAAAGiQH3/5gmZXoeWU5AZ1/w4WAAAAAACAsU7AAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUEjAAgAAAAAAUKghAct//dd/5Td/8zcza9asTJ06NR/72MeyY8eO2uPVajU333xzuru7M2XKlJx99tl55plnBq3jwIEDueqqqzJ79uxMmzYtK1asyMsvvzyoTH9/f3p6elKpVFKpVNLT05PXX3+9EU0CAAAAAACoqXvA0t/fnzPPPDPHHXdc/vZv/zY/+MEPcvvtt+f9739/rcy6detyxx13ZP369dm+fXu6urpy7rnnZu/evbUyvb292bhxYzZs2JBt27Zl3759Wb58eQ4dOlQrs2rVquzcuTObNm3Kpk2bsnPnzvT09NS7SQAAAAAAAIN0VKvVaj1XeOONN+Zf/uVf8p3vfOeoj1er1XR3d6e3tzc33HBDkp/drdLZ2ZnbbrstV1xxRQYGBvKBD3wgDz74YC6++OIkySuvvJK5c+fm0UcfzXnnnZdnn302p5xySp544oksWrQoSfLEE09k8eLF+eEPf5iTTjrpPeu6Z8+eVCqVDAwMZMaMGXXqgbHjwzd+u9lVAAAAAACgQX785QuaXYWWU5Ib1P0Olm9+85s5/fTT82u/9muZM2dOTjvttNx///21x59//vn09fVl2bJltWWTJ0/OWWedlcceeyxJsmPHjrz55puDynR3d2fBggW1Mo8//ngqlUotXEmSM844I5VKpVbmcAcOHMiePXsG/QAAAAAAAJSqe8Dyn//5n7nnnnsyf/78/N3f/V0+97nP5eqrr85f/uVfJkn6+vqSJJ2dnYOe19nZWXusr68vkyZNygknnHDMMnPmzDni9efMmVMrc7i1a9fWvq+lUqlk7ty5I2ssAAAAAAAwLtU9YHnrrbfy8Y9/PGvWrMlpp52WK664IpdddlnuueeeQeU6OjoG/V2tVo9YdrjDyxyt/LHWc9NNN2VgYKD289JLLw21WQAAAAAAADV1D1g++MEP5pRTThm07OSTT86LL76YJOnq6kqSI+4y2b17d+2ulq6urhw8eDD9/f3HLPPqq68e8fqvvfbaEXfHvG3y5MmZMWPGoB8AAAAAAIBSdQ9YzjzzzDz33HODlv3oRz/Kz/3czyVJ5s2bl66urmzZsqX2+MGDB7N169YsWbIkSbJw4cIcd9xxg8rs2rUrTz/9dK3M4sWLMzAwkKeeeqpW5sknn8zAwECtDAAAAAAAQCNMrPcKv/CFL2TJkiVZs2ZNVq5cmaeeeir33Xdf7rvvviQ/+7devb29WbNmTebPn5/58+dnzZo1mTp1alatWpUkqVQqufTSS3Pttddm1qxZmTlzZq677rqceuqpWbp0aZKf3RVz/vnn57LLLsu9996bJLn88suzfPnynHTSSfVuFgAAAAAAQE3dA5ZPfOIT2bhxY2666abccsstmTdvXu66665ccskltTLXX3999u/fn9WrV6e/vz+LFi3K5s2bM3369FqZO++8MxMnTszKlSuzf//+nHPOOXnggQcyYcKEWpmHH344V199dZYtW5YkWbFiRdavX1/vJgEAAAAAAAzSUa1Wq82uRLPs2bMnlUolAwMDvo/lKD5847ebXQUAAAAAABrkx1++oNlVaDkluUHdv4MFAAAAAABgrBOwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFBKwAAAAAAAAFGp4wLJ27dp0dHSkt7e3tqxarebmm29Od3d3pkyZkrPPPjvPPPPMoOcdOHAgV111VWbPnp1p06ZlxYoVefnllweV6e/vT09PTyqVSiqVSnp6evL66683ukkAAAAAAMA419CAZfv27bnvvvvyC7/wC4OWr1u3LnfccUfWr1+f7du3p6urK+eee2727t1bK9Pb25uNGzdmw4YN2bZtW/bt25fly5fn0KFDtTKrVq3Kzp07s2nTpmzatCk7d+5MT09PI5sEAAAAAADQuIBl3759ueSSS3L//ffnhBNOqC2vVqu566678sUvfjGf+cxnsmDBgnz961/PT37ykzzyyCNJkoGBgXzta1/L7bffnqVLl+a0007LQw89lO9///v5+7//+yTJs88+m02bNuXP//zPs3jx4ixevDj3339/vvWtb+W5555rVLMAAAAAAAAaF7BceeWVueCCC7J06dJBy59//vn09fVl2bJltWWTJ0/OWWedlcceeyxJsmPHjrz55puDynR3d2fBggW1Mo8//ngqlUoWLVpUK3PGGWekUqnUyhzuwIED2bNnz6AfAAAAAACAUhMbsdINGzbku9/9brZv337EY319fUmSzs7OQcs7Ozvzwgsv1MpMmjRp0J0vb5d5+/l9fX2ZM2fOEeufM2dOrczh1q5dmy996UvlDQIAAAAAAHiHut/B8tJLL+V3f/d389BDD+X4449/13IdHR2D/q5Wq0csO9zhZY5W/ljruemmmzIwMFD7eemll475egAAAAAAAEdT94Blx44d2b17dxYuXJiJEydm4sSJ2bp1a/70T/80EydOrN25cvhdJrt376491tXVlYMHD6a/v/+YZV599dUjXv+111474u6Yt02ePDkzZswY9AMAAAAAAFCq7gHLOeeck+9///vZuXNn7ef000/PJZdckp07d+YjH/lIurq6smXLltpzDh48mK1bt2bJkiVJkoULF+a4444bVGbXrl15+umna2UWL16cgYGBPPXUU7UyTz75ZAYGBmplAAAAAAAAGqHu38Eyffr0LFiwYNCyadOmZdasWbXlvb29WbNmTebPn5/58+dnzZo1mTp1alatWpUkqVQqufTSS3Pttddm1qxZmTlzZq677rqceuqpWbp0aZLk5JNPzvnnn5/LLrss9957b5Lk8ssvz/Lly3PSSSfVu1kAAAAAAAA1DfmS+/dy/fXXZ//+/Vm9enX6+/uzaNGibN68OdOnT6+VufPOOzNx4sSsXLky+/fvzznnnJMHHnggEyZM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n/pUs6sFAAAAAACMYW0fsAAAAAAAAIy2tv0OFgAAAAAAgGYRsAAAAAAAABQSsAAAAAAAABQSsAAAAAAAABQSsHCEr371q5k3b16OP/74LFy4MN/5zneaXSWgDa1duzaf+MQnMn369MyZMycXXXRRnnvuuUFlqtVqbr755nR3d2fKlCk5++yz88wzzzSpxkC7W7t2bTo6OtLb21tbZpwBRuq//uu/8pu/+ZuZNWtWpk6dmo997GPZsWNH7XHjDDASP/3pT/P7v//7mTdvXqZMmZKPfOQjueWWW/LWW2/VyhhngBL//M//nAsvvDDd3d3p6OjIX//1Xw96fChjyoEDB3LVVVdl9uzZmTZtWlasWJGXX355FFvRPgQsDPKNb3wjvb29+eIXv5jvfe97+aVf+qV8+tOfzosvvtjsqgFtZuvWrbnyyivzxBNPZMuWLfnpT3+aZcuW5Y033qiVWbduXe64446sX78+27dvT1dXV84999zs3bu3iTUH2tH27dtz33335Rd+4RcGLTfOACPR39+fM888M8cdd1z+9m//Nj/4wQ9y++235/3vf3+tjHEGGInbbrstf/Znf5b169fn2Wefzbp16/KVr3wld999d62McQYo8cYbb+QXf/EXs379+qM+PpQxpbe3Nxs3bsyGDRuybdu27Nu3L8uXL8+hQ4dGqxlto6NarVabXQlax6JFi/Lxj38899xzT23ZySefnIsuuihr165tYs2Advfaa69lzpw52bp1az71qU+lWq2mu7s7vb29ueGGG5L87AqJzs7O3HbbbbniiiuaXGOgXezbty8f//jH89WvfjV//Md/nI997GO56667jDPAiN144435l3/5l3e9q984A4zU8uXL09nZma997Wu1Zb/6q7+aqVOn5sEHHzTOACPS0dGRjRs35qKLLkoytHOXgYGBfOADH8iDDz6Yiy++OEnyyiuvZO7cuXn00Udz3nnnNas5LckdLNQcPHgwO3bsyLJlywYtX7ZsWR577LEm1QoYKwYGBpIkM2fOTJI8//zz6evrGzTmTJ48OWeddZYxByhy5ZVX5oILLsjSpUsHLTfOACP1zW9+M6effnp+7dd+LXPmzMlpp52W+++/v/a4cQYYqU9+8pP5h3/4h/zoRz9Kkvzbv/1btm3bll/5lV9JYpwB6msoY8qOHTvy5ptvDirT3d2dBQsWGHeOYmKzK0Dr+O///u8cOnQonZ2dg5Z3dnamr6+vSbUCxoJqtZprrrkmn/zkJ7NgwYIkqY0rRxtzXnjhhVGvI9CeNmzYkO9+97vZvn37EY8ZZ4CR+s///M/cc889ueaaa/K///f/zlNPPZWrr746kydPzm/91m8ZZ4ARu+GGGzIwMJCf//mfz4QJE3Lo0KHceuut+Y3f+I0kzmeA+hrKmNLX15dJkyblhBNOOKKMOeIjCVg4QkdHx6C/q9XqEcsASnz+85/Pv//7v2fbtm1HPGbMAYbrpZdeyu/+7u9m8+bNOf7449+1nHEGGK633norp59+etasWZMkOe200/LMM8/knnvuyW/91m/VyhlngOH6xje+kYceeiiPPPJIPvrRj2bnzp3p7e1Nd3d3PvvZz9bKGWeAehrOmGLcOTr/Ioya2bNnZ8KECUckkbt37z4i1QQYqquuuirf/OY380//9E/50Ic+VFve1dWVJMYcYNh27NiR3bt3Z+HChZk4cWImTpyYrVu35k//9E8zceLE2lhinAGG64Mf/GBOOeWUQctOPvnkvPjii0mczwAj93u/93u58cYb8+u//us59dRT09PTky984Qu178E1zgD1NJQxpaurKwcPHkx/f/+7luH/J2ChZtKkSVm4cGG2bNkyaPmWLVuyZMmSJtUKaFfVajWf//zn81d/9Vf5x3/8x8ybN2/Q4/PmzUtXV9egMefgwYPZunWrMQcYknPOOSff//73s3PnztrP6aefnksuuSQ7d+7MRz7yEeMMMCJnnnlmnnvuuUHLfvSjH+Xnfu7nkjifAUbuJz/5Sd73vsHTcxMmTMhbb72VxDgD1NdQxpSFCxfmuOOOG1Rm165defrpp407R+FfhDHINddck56enpx++ulZvHhx7rvvvrz44ov53Oc+1+yqAW3myiuvzCOPPJK/+Zu/yfTp02tXR1QqlUyZMiUdHR3p7e3NmjVrMn/+/MyfPz9r1qzJ1KlTs2rVqibXHmgH06dPr32v09umTZuWWbNm1ZYbZ4CR+MIXvpAlS5ZkzZo1WblyZZ566qncd999ue+++5LE+QwwYhdeeGFuvfXWnHjiifnoRz+a733ve7njjjvyO7/zO0mMM0C5ffv25T/+4z9qfz///PPZuXNnZs6cmRNPPPE9x5RKpZJLL7001157bWbNmpWZM2fmuuuuy6mnnpqlS5c2q1ktS8DCIBdffHH+3//7f7nllluya9euLFiwII8++mjtCi2AobrnnnuSJGefffag5X/xF3+R3/7t306SXH/99dm/f39Wr16d/v7+LFq0KJs3b8706dNHubbAWGWcAUbiE5/4RDZu3Jibbropt9xyS+bNm5e77rorl1xySa2McQYYibvvvjt/8Ad/kNWrV2f37t3p7u7OFVdckT/8wz+slTHOACX+9V//Nb/8y79c+/uaa65Jknz2s5/NAw88MKQx5c4778zEiROzcuXK7N+/P+ecc04eeOCBTJgwYdTb0+o6qtVqtdmVAAAAAAAAaCe+gwUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKCQgAUAAAAAAKDQ/wc0/t80iNs1KgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 生成均值分布数组，low\\high:采样数据上下限,size:数量\n",
    "x2 = np.random.uniform(0,100,10000000)\n",
    "\n",
    "plt.figure(figsize=(20,8),dpi=100)\n",
    "\n",
    "# hist 直方图，分成1000组\n",
    "plt.hist(x2,1000)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "802f81ec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([73, 78,  2,  7])"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数组操作：从score中的第2给元素，拿出前四个\n",
    "score[1,0:4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "98b59206",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([72,  7])"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dimArr3[1,1,1:3] #96,  72,   7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "49a944a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 17,  28,  52,  77,  77],\n",
       "       [ 11,  29,  78,   2,  73],\n",
       "       [ 78,   2,   7,  65,  30],\n",
       "       [ 85,  37,  21,  85,   8],\n",
       "       [ 12,  65,  33,  81,  34],\n",
       "       [ 28,  64,  84,  60,  73],\n",
       "       [ 89,  80,  13,  38,  35],\n",
       "       [ 95,  77,  78,  92,  79],\n",
       "       [ 94,  37,  81,  90,  82],\n",
       "       [ 47,  13,   5,  29,  82],\n",
       "       [ 36,  58,  21,  52,  64],\n",
       "       [ 73,  21,  26,  92,  32],\n",
       "       [  5,  31,  80,  47,  55],\n",
       "       [ 46,  42,  59,  12,  21],\n",
       "       [ 39,  20,  31,  69,  13],\n",
       "       [ 87,  51,   8,  54,  43],\n",
       "       [ 64,  19,  24,  29,  53],\n",
       "       [ 53,  68,  40,  26,  49],\n",
       "       [ 99,  25,  23,   9,   6],\n",
       "       [ 31,  52,  90,  74,  98],\n",
       "       [ 28,  92,   7,  76,  56],\n",
       "       [ 34,  53,  95, 100,  82],\n",
       "       [ 85,   6,  52,  87,  12],\n",
       "       [ 65,  57,  20,  15,  26],\n",
       "       [ 91,   2,  71,  22,  19],\n",
       "       [ 94,   6,  70,  34,  22],\n",
       "       [  1,  44,  84,  78,  98],\n",
       "       [ 59,  59,  13,  24,  90],\n",
       "       [ 73,  84,  59,  91,  55],\n",
       "       [ 39,  38,  26,  36,   3],\n",
       "       [ 66,   5,   3,  42,  30],\n",
       "       [ 85,  51,  99,  37,  75],\n",
       "       [ 71,  61,  56,  78,  64],\n",
       "       [ 63,  20,   2,  57,  26],\n",
       "       [ 77,   3,  52,  50,  86],\n",
       "       [ 14,  16,  93,  81,  10]])"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 修改形状，原来的是20行，9列，现在改为x行5列，当不知道多少行的时候，写-1\n",
    "score.reshape([-1,5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "0fa3cd3e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 17,  28,  52,  77,  77,  11,  29,  78,   2,  73,  78,   2,   7,\n",
       "         65,  30,  85,  37,  21,  85,   8,  12,  65,  33,  81,  34,  28,\n",
       "         64,  84,  60,  73,  89,  80,  13,  38,  35,  95],\n",
       "       [ 77,  78,  92,  79,  94,  37,  81,  90,  82,  47,  13,   5,  29,\n",
       "         82,  36,  58,  21,  52,  64,  73,  21,  26,  92,  32,   5,  31,\n",
       "         80,  47,  55,  46,  42,  59,  12,  21,  39,  20],\n",
       "       [ 31,  69,  13,  87,  51,   8,  54,  43,  64,  19,  24,  29,  53,\n",
       "         53,  68,  40,  26,  49,  99,  25,  23,   9,   6,  31,  52,  90,\n",
       "         74,  98,  28,  92,   7,  76,  56,  34,  53,  95],\n",
       "       [100,  82,  85,   6,  52,  87,  12,  65,  57,  20,  15,  26,  91,\n",
       "          2,  71,  22,  19,  94,   6,  70,  34,  22,   1,  44,  84,  78,\n",
       "         98,  59,  59,  13,  24,  90,  73,  84,  59,  91],\n",
       "       [ 55,  39,  38,  26,  36,   3,  66,   5,   3,  42,  30,  85,  51,\n",
       "         99,  37,  75,  71,  61,  56,  78,  64,  63,  20,   2,  57,  26,\n",
       "         77,   3,  52,  50,  86,  14,  16,  93,  81,  10]])"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.reshape([5,-1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "id": "499083c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 9)"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "2e965784",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9, 20)"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 9行 20列，对原来的数组进行修改！！！！！！！！！！！！！！\n",
    "score.resize([9,20])\n",
    "score.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "9228b717",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 17,  28,  52,  77,  77,  11,  29,  78,   2,  73,  78,   2,   7,\n",
       "         65,  30,  85,  37,  21,  85,   8],\n",
       "       [ 12,  65,  33,  81,  34,  28,  64,  84,  60,  73,  89,  80,  13,\n",
       "         38,  35,  95,  77,  78,  92,  79],\n",
       "       [ 94,  37,  81,  90,  82,  47,  13,   5,  29,  82,  36,  58,  21,\n",
       "         52,  64,  73,  21,  26,  92,  32],\n",
       "       [  5,  31,  80,  47,  55,  46,  42,  59,  12,  21,  39,  20,  31,\n",
       "         69,  13,  87,  51,   8,  54,  43],\n",
       "       [ 64,  19,  24,  29,  53,  53,  68,  40,  26,  49,  99,  25,  23,\n",
       "          9,   6,  31,  52,  90,  74,  98],\n",
       "       [ 28,  92,   7,  76,  56,  34,  53,  95, 100,  82,  85,   6,  52,\n",
       "         87,  12,  65,  57,  20,  15,  26],\n",
       "       [ 91,   2,  71,  22,  19,  94,   6,  70,  34,  22,   1,  44,  84,\n",
       "         78,  98,  59,  59,  13,  24,  90],\n",
       "       [ 73,  84,  59,  91,  55,  39,  38,  26,  36,   3,  66,   5,   3,\n",
       "         42,  30,  85,  51,  99,  37,  75],\n",
       "       [ 71,  61,  56,  78,  64,  63,  20,   2,  57,  26,  77,   3,  52,\n",
       "         50,  86,  14,  16,  93,  81,  10]])"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "978c929b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 17,  12,  94,   5,  64,  28,  91,  73,  71],\n",
       "       [ 28,  65,  37,  31,  19,  92,   2,  84,  61],\n",
       "       [ 52,  33,  81,  80,  24,   7,  71,  59,  56],\n",
       "       [ 77,  81,  90,  47,  29,  76,  22,  91,  78],\n",
       "       [ 77,  34,  82,  55,  53,  56,  19,  55,  64],\n",
       "       [ 11,  28,  47,  46,  53,  34,  94,  39,  63],\n",
       "       [ 29,  64,  13,  42,  68,  53,   6,  38,  20],\n",
       "       [ 78,  84,   5,  59,  40,  95,  70,  26,   2],\n",
       "       [  2,  60,  29,  12,  26, 100,  34,  36,  57],\n",
       "       [ 73,  73,  82,  21,  49,  82,  22,   3,  26],\n",
       "       [ 78,  89,  36,  39,  99,  85,   1,  66,  77],\n",
       "       [  2,  80,  58,  20,  25,   6,  44,   5,   3],\n",
       "       [  7,  13,  21,  31,  23,  52,  84,   3,  52],\n",
       "       [ 65,  38,  52,  69,   9,  87,  78,  42,  50],\n",
       "       [ 30,  35,  64,  13,   6,  12,  98,  30,  86],\n",
       "       [ 85,  95,  73,  87,  31,  65,  59,  85,  14],\n",
       "       [ 37,  77,  21,  51,  52,  57,  59,  51,  16],\n",
       "       [ 21,  78,  26,   8,  90,  20,  13,  99,  93],\n",
       "       [ 85,  92,  92,  54,  74,  15,  24,  37,  81],\n",
       "       [  8,  79,  32,  43,  98,  26,  90,  75,  10]])"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 行列转换\n",
    "score.T"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43027f34",
   "metadata": {},
   "source": [
    "# 类型修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "881f7031",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 17.,  28.,  52.,  77.,  77.,  11.,  29.,  78.,   2.,  73.,  78.,\n",
       "          2.,   7.,  65.,  30.,  85.,  37.,  21.,  85.,   8.],\n",
       "       [ 12.,  65.,  33.,  81.,  34.,  28.,  64.,  84.,  60.,  73.,  89.,\n",
       "         80.,  13.,  38.,  35.,  95.,  77.,  78.,  92.,  79.],\n",
       "       [ 94.,  37.,  81.,  90.,  82.,  47.,  13.,   5.,  29.,  82.,  36.,\n",
       "         58.,  21.,  52.,  64.,  73.,  21.,  26.,  92.,  32.],\n",
       "       [  5.,  31.,  80.,  47.,  55.,  46.,  42.,  59.,  12.,  21.,  39.,\n",
       "         20.,  31.,  69.,  13.,  87.,  51.,   8.,  54.,  43.],\n",
       "       [ 64.,  19.,  24.,  29.,  53.,  53.,  68.,  40.,  26.,  49.,  99.,\n",
       "         25.,  23.,   9.,   6.,  31.,  52.,  90.,  74.,  98.],\n",
       "       [ 28.,  92.,   7.,  76.,  56.,  34.,  53.,  95., 100.,  82.,  85.,\n",
       "          6.,  52.,  87.,  12.,  65.,  57.,  20.,  15.,  26.],\n",
       "       [ 91.,   2.,  71.,  22.,  19.,  94.,   6.,  70.,  34.,  22.,   1.,\n",
       "         44.,  84.,  78.,  98.,  59.,  59.,  13.,  24.,  90.],\n",
       "       [ 73.,  84.,  59.,  91.,  55.,  39.,  38.,  26.,  36.,   3.,  66.,\n",
       "          5.,   3.,  42.,  30.,  85.,  51.,  99.,  37.,  75.],\n",
       "       [ 71.,  61.,  56.,  78.,  64.,  63.,  20.,   2.,  57.,  26.,  77.,\n",
       "          3.,  52.,  50.,  86.,  14.,  16.,  93.,  81.,  10.]],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.astype(np.float32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "34ed97ae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x11\\x00\\x00\\x00\\x1c\\x00\\x00\\x004\\x00\\x00\\x00M\\x00\\x00\\x00M\\x00\\x00\\x00\\x0b\\x00\\x00\\x00\\x1d\\x00\\x00\\x00N\\x00\\x00\\x00\\x02\\x00\\x00\\x00I\\x00\\x00\\x00N\\x00\\x00\\x00\\x02\\x00\\x00\\x00\\x07\\x00\\x00\\x00A\\x00\\x00\\x00\\x1e\\x00\\x00\\x00U\\x00\\x00\\x00%\\x00\\x00\\x00\\x15\\x00\\x00\\x00U\\x00\\x00\\x00\\x08\\x00\\x00\\x00\\x0c\\x00\\x00\\x00A\\x00\\x00\\x00!\\x00\\x00\\x00Q\\x00\\x00\\x00\"\\x00\\x00\\x00\\x1c\\x00\\x00\\x00@\\x00\\x00\\x00T\\x00\\x00\\x00<\\x00\\x00\\x00I\\x00\\x00\\x00Y\\x00\\x00\\x00P\\x00\\x00\\x00\\r\\x00\\x00\\x00&\\x00\\x00\\x00#\\x00\\x00\\x00_\\x00\\x00\\x00M\\x00\\x00\\x00N\\x00\\x00\\x00\\\\\\x00\\x00\\x00O\\x00\\x00\\x00^\\x00\\x00\\x00%\\x00\\x00\\x00Q\\x00\\x00\\x00Z\\x00\\x00\\x00R\\x00\\x00\\x00/\\x00\\x00\\x00\\r\\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x1d\\x00\\x00\\x00R\\x00\\x00\\x00$\\x00\\x00\\x00:\\x00\\x00\\x00\\x15\\x00\\x00\\x004\\x00\\x00\\x00@\\x00\\x00\\x00I\\x00\\x00\\x00\\x15\\x00\\x00\\x00\\x1a\\x00\\x00\\x00\\\\\\x00\\x00\\x00 \\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x1f\\x00\\x00\\x00P\\x00\\x00\\x00/\\x00\\x00\\x007\\x00\\x00\\x00.\\x00\\x00\\x00*\\x00\\x00\\x00;\\x00\\x00\\x00\\x0c\\x00\\x00\\x00\\x15\\x00\\x00\\x00\\'\\x00\\x00\\x00\\x14\\x00\\x00\\x00\\x1f\\x00\\x00\\x00E\\x00\\x00\\x00\\r\\x00\\x00\\x00W\\x00\\x00\\x003\\x00\\x00\\x00\\x08\\x00\\x00\\x006\\x00\\x00\\x00+\\x00\\x00\\x00@\\x00\\x00\\x00\\x13\\x00\\x00\\x00\\x18\\x00\\x00\\x00\\x1d\\x00\\x00\\x005\\x00\\x00\\x005\\x00\\x00\\x00D\\x00\\x00\\x00(\\x00\\x00\\x00\\x1a\\x00\\x00\\x001\\x00\\x00\\x00c\\x00\\x00\\x00\\x19\\x00\\x00\\x00\\x17\\x00\\x00\\x00\\t\\x00\\x00\\x00\\x06\\x00\\x00\\x00\\x1f\\x00\\x00\\x004\\x00\\x00\\x00Z\\x00\\x00\\x00J\\x00\\x00\\x00b\\x00\\x00\\x00\\x1c\\x00\\x00\\x00\\\\\\x00\\x00\\x00\\x07\\x00\\x00\\x00L\\x00\\x00\\x008\\x00\\x00\\x00\"\\x00\\x00\\x005\\x00\\x00\\x00_\\x00\\x00\\x00d\\x00\\x00\\x00R\\x00\\x00\\x00U\\x00\\x00\\x00\\x06\\x00\\x00\\x004\\x00\\x00\\x00W\\x00\\x00\\x00\\x0c\\x00\\x00\\x00A\\x00\\x00\\x009\\x00\\x00\\x00\\x14\\x00\\x00\\x00\\x0f\\x00\\x00\\x00\\x1a\\x00\\x00\\x00[\\x00\\x00\\x00\\x02\\x00\\x00\\x00G\\x00\\x00\\x00\\x16\\x00\\x00\\x00\\x13\\x00\\x00\\x00^\\x00\\x00\\x00\\x06\\x00\\x00\\x00F\\x00\\x00\\x00\"\\x00\\x00\\x00\\x16\\x00\\x00\\x00\\x01\\x00\\x00\\x00,\\x00\\x00\\x00T\\x00\\x00\\x00N\\x00\\x00\\x00b\\x00\\x00\\x00;\\x00\\x00\\x00;\\x00\\x00\\x00\\r\\x00\\x00\\x00\\x18\\x00\\x00\\x00Z\\x00\\x00\\x00I\\x00\\x00\\x00T\\x00\\x00\\x00;\\x00\\x00\\x00[\\x00\\x00\\x007\\x00\\x00\\x00\\'\\x00\\x00\\x00&\\x00\\x00\\x00\\x1a\\x00\\x00\\x00$\\x00\\x00\\x00\\x03\\x00\\x00\\x00B\\x00\\x00\\x00\\x05\\x00\\x00\\x00\\x03\\x00\\x00\\x00*\\x00\\x00\\x00\\x1e\\x00\\x00\\x00U\\x00\\x00\\x003\\x00\\x00\\x00c\\x00\\x00\\x00%\\x00\\x00\\x00K\\x00\\x00\\x00G\\x00\\x00\\x00=\\x00\\x00\\x008\\x00\\x00\\x00N\\x00\\x00\\x00@\\x00\\x00\\x00?\\x00\\x00\\x00\\x14\\x00\\x00\\x00\\x02\\x00\\x00\\x009\\x00\\x00\\x00\\x1a\\x00\\x00\\x00M\\x00\\x00\\x00\\x03\\x00\\x00\\x004\\x00\\x00\\x002\\x00\\x00\\x00V\\x00\\x00\\x00\\x0e\\x00\\x00\\x00\\x10\\x00\\x00\\x00]\\x00\\x00\\x00Q\\x00\\x00\\x00\\n\\x00\\x00\\x00'"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "score.tobytes()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "27a13bb1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5, 6])"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 数组去重\n",
    "\n",
    "dupArr = [[1,2,3,4],[3,4,5,6]]\n",
    "np.unique(dupArr)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "id": "c38c4521",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1,   2,   3,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,\n",
       "        15,  16,  17,  19,  20,  21,  22,  23,  24,  25,  26,  28,  29,\n",
       "        30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  42,  43,\n",
       "        44,  46,  47,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,\n",
       "        59,  60,  61,  63,  64,  65,  66,  68,  69,  70,  71,  73,  74,\n",
       "        75,  76,  77,  78,  79,  80,  81,  82,  84,  85,  86,  87,  89,\n",
       "        90,  91,  92,  93,  94,  95,  98,  99, 100])"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "newArr = np.unique(score)\n",
    "newArr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "c96c18d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "87"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "newArr.size"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39095820",
   "metadata": {},
   "source": [
    "# np逻辑运算"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "638e7a67",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[78, 66, 83, 52, 56],\n",
       "       [67, 96, 86, 98, 71],\n",
       "       [53, 67, 92, 99, 68],\n",
       "       [98, 62, 64, 92, 77],\n",
       "       [78, 66, 64, 76, 67],\n",
       "       [52, 58, 50, 67, 55],\n",
       "       [68, 67, 91, 55, 82],\n",
       "       [82, 93, 97, 69, 75],\n",
       "       [62, 50, 69, 87, 70],\n",
       "       [89, 72, 96, 68, 59],\n",
       "       [71, 61, 61, 85, 80],\n",
       "       [56, 84, 68, 72, 77],\n",
       "       [58, 85, 85, 58, 72],\n",
       "       [70, 56, 78, 52, 71],\n",
       "       [73, 88, 85, 62, 87],\n",
       "       [59, 93, 78, 55, 71],\n",
       "       [67, 70, 56, 98, 58],\n",
       "       [62, 67, 69, 56, 57],\n",
       "       [81, 67, 96, 90, 99],\n",
       "       [99, 91, 72, 66, 58]])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "# 分数从50到100，生成20个5科考试成绩\n",
    "exam = np.random.randint(50,100,(20,5))\n",
    "exam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "de811b80",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[78, 66, 83, 52, 56],\n",
       "       [67, 96, 86, 98, 71],\n",
       "       [53, 67, 92, 99, 68],\n",
       "       [98, 62, 64, 92, 77],\n",
       "       [78, 66, 64, 76, 67]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 6: 表示跳过前面6给，取后面的数据\n",
    "# 0:5 表示每行数据取从0~5个元素\n",
    "# 6: 表示取后面6给元素\n",
    "# 1:3 表示跳过1行取前面3-1行\n",
    "tmpExam = exam[:5,0:5]\n",
    "tmpExam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "3785c942",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ True,  True,  True,  True,  True],\n",
       "       [ True,  True,  True,  True,  True],\n",
       "       [False,  True,  True, False,  True],\n",
       "       [False,  True,  True,  True, False],\n",
       "       [ True,  True,  True,  True, False]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 判断分数是否大于60 \n",
    "tmpExam > 60"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "93c51fae",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  0,  0, 52, 56],\n",
       "       [ 0,  0,  0,  0,  0],\n",
       "       [53,  0,  0,  0,  0],\n",
       "       [ 0,  0,  0,  0,  0],\n",
       "       [ 0,  0,  0,  0,  0]])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 判断分数是否大于60 ，满足条件，赋值1 \n",
    "tmpExam[tmpExam>60] = 0\n",
    "tmpExam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "4e86670c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.all(exam[:2,:]>60)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "e6c21989",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[78, 66, 83, 52, 56],\n",
       "       [67, 96, 86, 98, 71]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exam[:2,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "d8cc1ebc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  0,  0, 52, 56],\n",
       "       [ 0,  0,  0,  0,  0],\n",
       "       [53,  0,  0,  0,  0],\n",
       "       [ 0,  0,  0,  0,  0],\n",
       "       [ 0,  0,  0,  0,  0],\n",
       "       [52, 58, 50, 67, 55],\n",
       "       [68, 67, 91, 55, 82],\n",
       "       [82, 93, 97, 69, 75],\n",
       "       [62, 50, 69, 87, 70],\n",
       "       [89, 72, 96, 68, 59],\n",
       "       [71, 61, 61, 85, 80],\n",
       "       [56, 84, 68, 72, 77],\n",
       "       [58, 85, 85, 58, 72],\n",
       "       [70, 56, 78, 52, 71],\n",
       "       [73, 88, 85, 62, 87],\n",
       "       [59, 93, 78, 55, 71],\n",
       "       [67, 70, 56, 98, 58],\n",
       "       [62, 67, 69, 56, 57],\n",
       "       [81, 67, 96, 90, 99],\n",
       "       [99, 91, 72, 66, 58]])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "58ef325c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.any(exam[2:,:]>60)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "fb93769e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[59, 93, 78, 55, 71],\n",
       "       [67, 70, 56, 98, 58],\n",
       "       [62, 67, 69, 56, 57],\n",
       "       [81, 67, 96, 90, 99],\n",
       "       [99, 91, 72, 66, 58]])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tmp = exam[15:,:]\n",
    "tmp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "8053a3c4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 1, 0, 1],\n",
       "       [1, 1, 0, 1, 0],\n",
       "       [1, 1, 1, 0, 0],\n",
       "       [1, 1, 1, 1, 1],\n",
       "       [1, 1, 1, 1, 0]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 三元运算，大于等于60，赋值1，小于赋值0\n",
    "np.where(tmp>=60,1,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "cf1c2a0a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 1, 0, 1],\n",
       "       [1, 1, 0, 1, 0],\n",
       "       [1, 1, 1, 0, 0],\n",
       "       [1, 1, 1, 1, 1],\n",
       "       [1, 1, 1, 1, 0]])"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 同样是三元运算，大于等于60，赋值1，小于赋值0\n",
    "np.where(np.logical_and(tmp>=60,tmp<100),1,0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "92a9a5a9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5名学生各科成绩最大值：[99 93 96 98 99]\n",
      "5名学生各科成绩最小值：[59 67 56 55 57]\n",
      "5名学生各科成绩平均值：[73.6 77.6 74.2 73.  68.6]\n",
      "5名学生各科成绩波动情况：[14.77294825 11.8253964  13.05986217 17.75387282 16.05739705]\n",
      "5名学生各科成绩中位数：[67. 70. 72. 66. 58.]\n",
      "5名学生各科成绩var？？？：[218.24 139.84 170.56 315.2  257.84]\n"
     ]
    }
   ],
   "source": [
    "# 最大值，axis=0代表列，=1代表行\n",
    "print('5名学生各科成绩最大值：{}'.format(np.max(tmp,axis=0)))\n",
    "\n",
    "# 最小值，axis=0代表列，=1代表行\n",
    "print('5名学生各科成绩最小值：{}'.format(np.min(tmp,axis=0)))\n",
    "\n",
    "# 平均值，axis=0代表列，=1代表行\n",
    "print('5名学生各科成绩平均值：{}'.format(np.mean(tmp,axis=0)))\n",
    "\n",
    "# 波动情况，axis=0代表列，=1代表行\n",
    "print('5名学生各科成绩波动情况：{}'.format(np.std(tmp,axis=0)))\n",
    "\n",
    "# 中位数，axis=0代表列，=1代表行\n",
    "print('5名学生各科成绩中位数：{}'.format(np.median(tmp,axis=0)))\n",
    "\n",
    "\n",
    "print('5名学生各科成绩var？？？：{}'.format(np.var(tmp,axis=0)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "e59461e9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "各科成绩最高的是：[4 0 3 1 3]\n",
      "各科成绩最低的是：[0 2 1 0 2]\n",
      "成绩单：\r\n",
      "[[59 93 78 55 71]\n",
      " [67 70 56 98 58]\n",
      " [62 67 69 56 57]\n",
      " [81 67 96 90 99]\n",
      " [99 91 72 66 58]]\n"
     ]
    }
   ],
   "source": [
    "# 如果要查出最高、低的分的是谁，就要用到 np.argmax 和 np.argmin ，axis=0代表列，=1代表行，不填代表全部统计\n",
    "print('各科成绩最高的是：{}'.format(np.argmax(tmp,axis=0)))\n",
    "\n",
    "# 如果要查出最高、低的分的是谁，就要用到 np.argmax 和 np.argmin ，axis=0代表列，=1代表行，不填代表全部统计\n",
    "print('各科成绩最低的是：{}'.format(np.argmin(tmp,axis=0)))\n",
    "print('成绩单：\\r\\n{}'.format(tmp))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8f394092",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
